UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

76 lines 5.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = GET; const error_handler_1 = require("../../../../utils/error-handler"); const response_handler_1 = require("../../../../utils/response-handler"); const loyalty_1 = require("../../../../modules/loyalty"); async function GET(req, res) { try { const loyaltyModuleService = req.scope.resolve(loyalty_1.LOYALTY_MODULE); const customer_id = req.params.id; // Extract query parameters (already validated by middleware) const { limit = 10, offset = 0, type, reference_type, sort_by = "created_at", sort_order = "DESC", } = req.query; // Ensure proper types for pagination const parsedLimit = Number(limit); const parsedOffset = Number(offset); // Build filter object const filters = { customer_id: customer_id, }; if (type) { filters.type = type; } if (reference_type) { filters.reference_type = reference_type; } // Build options object for pagination and sorting const options = { take: parsedLimit, skip: parsedOffset, order: { [sort_by]: sort_order }, }; // Get transactions with pagination const transactions = await loyaltyModuleService.listLoyaltyTransactions(filters, options); // Get total count for pagination metadata const [_, total] = await loyaltyModuleService.listAndCountLoyaltyTransactions(filters, { take: 0, skip: 0, }); // Get customer points const points = await loyaltyModuleService.getPoints(customer_id); // Calculate pagination metadata const totalPages = Math.ceil(total / parsedLimit); const currentPage = Math.floor(parsedOffset / parsedLimit) + 1; const hasNextPage = currentPage < totalPages; const hasPrevPage = currentPage > 1; const response = { data: { points, transactions, customer_id, }, pagination: { total, total_pages: totalPages, current_page: currentPage, limit: parsedLimit, offset: parsedOffset, has_next_page: hasNextPage, has_prev_page: hasPrevPage, next_page: hasNextPage ? currentPage + 1 : null, prev_page: hasPrevPage ? currentPage - 1 : null, }, filters: { type: type || null, reference_type: reference_type || null, sort_by: sort_by, sort_order: sort_order, }, }; (0, response_handler_1.sendSuccessResponse)(res, response); } catch (error) { (0, error_handler_1.handleError)(error, res); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2xveWFsdHktdHJhbnNhY3Rpb25zL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxrQkE4RkM7QUFwR0QsbUVBQThEO0FBQzlELHlFQUF5RTtBQUd6RSx5REFBNkQ7QUFFdEQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELElBQUksQ0FBQztRQUNILE1BQU0sb0JBQW9CLEdBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHdCQUFjLENBQUMsQ0FBQztRQUVwQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUVsQyw2REFBNkQ7UUFDN0QsTUFBTSxFQUNKLEtBQUssR0FBRyxFQUFFLEVBQ1YsTUFBTSxHQUFHLENBQUMsRUFDVixJQUFJLEVBQ0osY0FBYyxFQUNkLE9BQU8sR0FBRyxZQUFZLEVBQ3RCLFVBQVUsR0FBRyxNQUFNLEdBQ3BCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUVkLHFDQUFxQztRQUNyQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBUTtZQUNuQixXQUFXLEVBQUUsV0FBVztTQUN6QixDQUFDO1FBRUYsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQzFDLENBQUM7UUFFRCxrREFBa0Q7UUFDbEQsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQWlCLENBQUMsRUFBRSxVQUE0QixFQUFFO1NBQzdELENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FDckUsT0FBTyxFQUNQLE9BQU8sQ0FDUixDQUFDO1FBRUYsMENBQTBDO1FBQzFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQywrQkFBK0IsQ0FDM0UsT0FBTyxFQUNQO1lBQ0UsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsQ0FBQztTQUNSLENBQ0YsQ0FBQztRQUVGLHNCQUFzQjtRQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRSxnQ0FBZ0M7UUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVwQyxNQUFNLFFBQVEsR0FBRztZQUNmLElBQUksRUFBRTtnQkFDSixNQUFNO2dCQUNOLFlBQVk7Z0JBQ1osV0FBVzthQUNaO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEtBQUs7Z0JBQ0wsV0FBVyxFQUFFLFVBQVU7Z0JBQ3ZCLFlBQVksRUFBRSxXQUFXO2dCQUN6QixLQUFLLEVBQUUsV0FBVztnQkFDbEIsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLGFBQWEsRUFBRSxXQUFXO2dCQUMxQixhQUFhLEVBQUUsV0FBVztnQkFDMUIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDL0MsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNoRDtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUk7Z0JBQ2xCLGNBQWMsRUFBRSxjQUFjLElBQUksSUFBSTtnQkFDdEMsT0FBTyxFQUFFLE9BQWlCO2dCQUMxQixVQUFVLEVBQUUsVUFBb0I7YUFDakM7U0FDRixDQUFDO1FBRUYsSUFBQSxzQ0FBbUIsRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDIn0=